Amazon RedshiftとAmazon RDS for MySQLとのゼロETL統合が一般提供開始したのでやってみた

Amazon RedshiftとAmazon RDS for MySQLとのゼロETL統合が一般提供開始したのでやってみた

Clock Icon2024.09.13

こんにちは。まるとです。
2024/9/12にAmazon RedshiftとAmazon RDS for MySQLとのゼロETL統合が一般提供開始する発表があったので、改めて実際にやってみたいと思います。(今まではプレビュー版扱いでした。)

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/WhatsNew.html

先に結論

  • ゼロETL統合により自動でデータウェアハウスにデータを取り込むことが可能に!
  • 自動で連携を行うことで人の手を介さなくなるため、正確かつ効率にデータの取り込みが可能に!

実際にやってみる

今回構築するもの・要件

すごくシンプルな図ですが、今回構築するものを以下に示します。

ma-1-arc-r2

また、Amazon RDSのDBエンジンにはMySQLを使用します。
これはAmazon RDSでサポートするDBエンジンがRDS for MySQL 8.0のみだからです。

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RDS_Fea_Regions_DB-eng.Feature.ZeroETL.html

※Amazon AuroraだとAurora MySQL version 3、プレビュー版ですがAurora PostgreSQL (compatible with PostgreSQL 15.4 and Zero-ETL Support)で利用できます。

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.Aurora_Fea_Regions_DB-eng.Feature.Zero-ETL.html

Amazon RDS パラメータグループの作成・設定

Amazon RDSの作成前に、ゼロETLの要件を満たすようにパラメータグループの作成・設定してきます。
パラメータグループはAmazon RDSのサイドバー、「パラメータグループ」から作成できます。

パラメータグループを作成する際は以下の設定値にします。
※記載がないものは任意の値を設定

項目名 設定値
エンジンのタイプ MySQL Community
パラメータグループファミリー mysql8.0
タイプ DB Parameter Group

ma-1-2

続いて、公式ドキュメントに記載の通り、一部のパラメータを変更します。

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/zero-etl.setting-up.html

今回変更する項目は、binlog_formatbinlog_row_imageです。
binlog_formatROWbinlog_row_imagefullに変更します。

ma-1-3

ma-1-4

Amazon RDSの作成

続いて、データソースとなるAmazon RDSの作成を行います。
要件にも記載した通り、DBエンジンにはMySQL、エンジンバージョンは8.0系を選択します。

ma-1-5

また、データベース作成の際、「追加設定 > DBパラメータグループ」より、先ほど作成したパラメータグループを指定します。

ma-1-6

以上でAmazon RDSの作成は完了です。

Amazon Redshiftパラメータグループの作成・設定

Amazon RedshiftでもAmazon RDSと同様に特定のパラメータを変更する必要があります。
そのため、まずは「設定 > ワークロード管理」よりパラメータグループの作成、パラメータの変更を行います。

ma-1-7

ma-1-8

パラメータグループを作成したら、enable_case_sensitive_identifierというパラメータをtrueに変更します。

ma-1-9

これでパラメータグループの準備は完了です。

Amazon Redshiftクラスターの作成

それでは、実際にデータウェアハウスとなるAmazon Redshiftクラスターを作成していきます。
サイドバーにある「クラスター」を選択後、オレンジ色のボタン「クラスターを作成」から行います。

ma-1-10

Zero-ETL統合を利用するには以下の要件を満たす必要があります。

  • 最低2ノードを保有するRA3ノード、またはRedshift Serverless
  • プロビジョニングされたクラスターの場合、暗号化が有効になっていること

この要件に沿って、クラスターを作成します。

ma-1-11

ma-1-12

これでAmazon Redshiftクラスターの作成は完了です。

Zero-ETL統合の設定

データソースとなるAmazon RDS、データの統合先であるデータウェアハウスAmazon Redshiftの作成が完了したので、早速Zero-ETL統合の設定を行なっていきます。

まず初めにZero-ETL統合を作成するための権限を付与します。
作成したAmazon Redshiftクラスターのプロパティ内にある「リソースポリシー」で承認されたプリンシパル承認された統合ソースを設定します。

承認されたプリンシパルにはAWSアカウントIDやIAMロールのARNなどを追加します。
承認された統合ソースには今回作成したAmazon RDSのARNを追加します。

ma-1-13

続いて、「Amazon RDS > データベース > ゼロETLの統合」から設定を作成します。

ma-1-14

途中、ソースとターゲットを聞かれるので、今回作成したAmazon RDS、Amazon Redshiftを選択していきます。
その他の設定項目は、今回検証を目的としているのでデフォルト値を使用します。
※本番環境で利用する際は、適切な値を設定してください。

ma-1-15

ma-1-16

ma-1-17

この設定が完了するとゼロETLの統合の設定が開始されます。(状況によりますが、検証時には30〜45分かかりました)
ただ、このままではデータの送信先となるターゲット(Amazon Redshift)側に連携用のデータベースがないため、警告が表示されます。

ma-1-18

そのため、Amazon Redshiftクラスターでクエリを実行し、統合先となるデータベースを作成してあげます。

データベースを作成するにはクエリエディタでクラスターに接続し、以下のクエリを実行します。

CREATE DATABASE <統合先のデータベース名> FROM INTEGRATION '統合ID';

※統合IDは以下のクエリを実行するか、AWSマネジメントコンソールから確認できます。

SELECT integration_id FROM SVV_INTEGRATION;

クエリが正常に実行できたらAmazon RDSとAmazon Redshiftの統合(分かりやすい単語だと、連携)は完了です。
※Amazon RedshiftのゼロETL統合でも警告が消え、アクティブになればOKです。(表示が切り替わるまでちょっと時間がかかります)

実際にゼロETL統合が動いているか確認する

それでは実際にソースとなるAmazon RDSにデータを挿入し、ゼロETL統合を通してAmazon Redshift側にデータが反映されていることを確認します。

Amazon RDSに接続して、データベース、テーブルを作成後、実際にデータを挿入します。

CREATE DATABASE testDb;
USE testDb;

CREATE TABLE testTable (
    ID int NOT NULL PRIMARY KEY,
    Note VARCHAR(64) NOT NULL
);

INSERT INTO testTable VALUES (1, 'Hello Zero ETL World!');
INSERT INTO testTable VALUES (2, 'This is amazing.');

上記のクエリをAmazon RDS側で実施したら、今度はAmazon Redshift側のクエリエディタでSELECTを実行します。

ma-1-20

できた!!!

終わりに

ゼロETL統合自体は昨年開催されたAWS re:Invent 2023で発表されたものですが、ついにAmazon RDS for MySQLとの統合が一般提供となりました!
これにより、簡単に連携、自動でデータをデータウェアハウスに取り込むことができるので、かなり楽になるのではないかなと思います。

参考文献

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/WhatsNew.html
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/zero-etl.html
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/zero-etl.setting-up.html

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.